﻿using QuanLyThuVien.BLL;
using QuanLyThuVien.DTO;
using QuanLyThuVien.Supporter;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace QuanLyThuVien.GUI
{
    public partial class GUIQuyDinh : DevComponents.DotNetBar.Office2007Form
    {
        private BLLQuyDinh _bllQuyDinh;
        private DTOQuyDinh _QuyDinh;

        //----------------------------------------------------------------------
        //Desc: constructor mặc định
        //----------------------------------------------------------------------
        public GUIQuyDinh()
        {
            InitializeComponent();

            _bllQuyDinh = new BLLQuyDinh();
            _QuyDinh = new DTOQuyDinh();
        }

        //----------------------------------------------------------------------
        //Desc: hiển thị thông tin quy định
        //----------------------------------------------------------------------
        public void HienThiQuyDinh()
        {
            _txtTuoiToiThieu.Text = _QuyDinh.TuoiToiThieu.ToString();
            _txtTuoiToiDa.Text = _QuyDinh.TuoiToiDa.ToString();
            _txtThoiHanThe.Text = _QuyDinh.ThoiHanThe.ToString();
            _txtSoSachMuonTD.Text = _QuyDinh.SoSachMuonTD.ToString();
            _txtSoNgayMuonTD.Text = _QuyDinh.SoNgayMuonTD.ToString();
            _txtThoiHanXB.Text = _QuyDinh.ThoiHanXB.ToString();
            _txtTienPhat.Text = _QuyDinh.TienPhatMoiNgay.ToString();
            if (_QuyDinh.ApDungQDSoTienThu)
                _chbApDung.Checked = true;
            else
                _chbKhongApDung.Checked = true;

        }

        //----------------------------------------------------------------------
        //Desc: lấy dữ liệu
        //----------------------------------------------------------------------
        public DTOQuyDinh LayDuLieu()
        {
            DTOQuyDinh quydinhmoi = new DTOQuyDinh();
            try
            {
                quydinhmoi.TuoiToiThieu = Int32.Parse(_txtTuoiToiThieu.Text);
            }
            catch
            {
                MessageBox.Show("Sai tuổi tối thiểu");
                return null;
            }
            if (quydinhmoi.TuoiToiThieu < 10)
            {
                MessageBox.Show("Tuổi tối thiểu quá nhỏ");
                return null;
            }
            else if (quydinhmoi.TuoiToiThieu > 60)
            {
                MessageBox.Show("Tuổi tối thiểu quá lớn");
                return null;
            }
            

            try
            {
                quydinhmoi.TuoiToiDa = Int32.Parse(_txtTuoiToiDa.Text);
            }
            catch
            {
                MessageBox.Show("Sai tuổi tối đa");
                return null;
            }
            if (quydinhmoi.TuoiToiDa <= quydinhmoi.TuoiToiThieu)
            {
                MessageBox.Show("Tuổi tối đa phải lớn hơn tuổi tối thiểu");
                return null;
            }
            else if (quydinhmoi.TuoiToiDa > 70)
            {
                MessageBox.Show("Tuổi tối đa quá lớn");
                return null;
            }



            try
            {
                quydinhmoi.ThoiHanThe = Int32.Parse(_txtThoiHanThe.Text);
            }
            catch
            {
                MessageBox.Show("Sai thời hạn thẻ");
                return null;
            }
            if (quydinhmoi.ThoiHanThe <= 0)
            {
                MessageBox.Show("Thời hạn thẻ phải lớn hơn 0");
                return null;
            }
            


            try
            {
                quydinhmoi.SoSachMuonTD = Int32.Parse(_txtSoSachMuonTD.Text);
            }
            catch
            {
                MessageBox.Show("Sai số sách mượn tối đa");
                return null;
            }
            if (quydinhmoi.SoSachMuonTD <= 0)
            {
                MessageBox.Show("Số sách mượn tối đa phải lớn hơn 0");
                return null;
            }
            


            try
            {
                quydinhmoi.SoNgayMuonTD = Int32.Parse(_txtSoNgayMuonTD.Text);
            }
            catch
            {
                MessageBox.Show("Sai số ngày mượn tối đa");
                return null;
            }
            if (quydinhmoi.SoNgayMuonTD <= 0)
            {
                MessageBox.Show("Số ngày mượn tối đa phải lớn hơn 0");
                return null;
            }
            


            try
            {
                quydinhmoi.ThoiHanXB = Int32.Parse(_txtThoiHanXB.Text);
            }
            catch
            {
                MessageBox.Show("Sai thời hạn xuất bản");
                return null;
            }
            if (quydinhmoi.ThoiHanXB <= 0)
            {
                MessageBox.Show("Thời hạn xuất bản phải lớn hơn 0");
                return null;
            }
            


            try
            {
                quydinhmoi.TienPhatMoiNgay = float.Parse(_txtTienPhat.Text);
            }
            catch
            {
                MessageBox.Show("Sai tiền phạt");
                return null;
            }
            if (quydinhmoi.TienPhatMoiNgay < 1000 || quydinhmoi.TienPhatMoiNgay % 1000 != 0)
            {
                MessageBox.Show("Tiền phạt từ 1000 trở lên và chia hết cho 1000");
                return null;
            }
            



            if (_chbApDung.Checked)
                quydinhmoi.ApDungQDSoTienThu = true;
            else
                quydinhmoi.ApDungQDSoTienThu = false;
           


            return quydinhmoi;
        }

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện form load
        //----------------------------------------------------------------------
        private void GUIThayDoiQuyDinh_Load(object sender, EventArgs e)
        {
            _QuyDinh = _bllQuyDinh.LayQuyDinh();
            if (_QuyDinh == null)
                MessageBox.Show("Không lấy được quy định");
            else
                HienThiQuyDinh();
        }

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện click button ThayDoi
        //----------------------------------------------------------------------
        private void btnThayDoi_Click(object sender, EventArgs e)
        {
            DTOQuyDinh quydinhmoi = LayDuLieu();
            if (quydinhmoi == null)
                HienThiQuyDinh();
            else
            {
                if (quydinhmoi.TuoiToiThieu != _QuyDinh.TuoiToiThieu
                    || quydinhmoi.TuoiToiDa != _QuyDinh.TuoiToiDa
                    || quydinhmoi.ThoiHanThe != _QuyDinh.ThoiHanThe
                    || quydinhmoi.SoSachMuonTD != _QuyDinh.SoSachMuonTD
                    || quydinhmoi.SoNgayMuonTD != _QuyDinh.SoNgayMuonTD
                    || quydinhmoi.ThoiHanXB != _QuyDinh.ThoiHanXB
                    || quydinhmoi.TienPhatMoiNgay != _QuyDinh.TienPhatMoiNgay
                    || quydinhmoi.ApDungQDSoTienThu != _QuyDinh.ApDungQDSoTienThu)
                {
                    if (_bllQuyDinh.CapNhat(quydinhmoi))
                    {
                        MessageBox.Show("Cập nhật thành công");
                        _QuyDinh = quydinhmoi;
                    }
                    else
                    {
                        MessageBox.Show("Cập nhật thất bại");
                        HienThiQuyDinh();
                    }
                }
                else
                {
                    MessageBox.Show("Chưa chọn thông tin thay đổi");
                    HienThiQuyDinh();
                }
            }
        }

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện click button Thoat
        //----------------------------------------------------------------------
        private void btnThoat_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện key press
        //----------------------------------------------------------------------
        private void txtNhapSo_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e != null)
            {
                if (Utils.CheckKeyCode(e.KeyChar))
                    e.Handled = false;
                else
                    e.Handled = true;
            }
        }

       
    }
}
